package com.hex.ds.hdtp.core.inf.data.transfer.repository.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hex.ds.hdtp.core.inf.common.page.Page;
import com.hex.ds.hdtp.core.inf.common.page.converter.IPageAndMyBatisPlusPageConverter;
import com.hex.ds.hdtp.core.inf.data.transfer.mapper.IDataTransferTaskMapper;
import com.hex.ds.hdtp.core.inf.data.transfer.po.DataTransferTaskPo;
import com.hex.ds.hdtp.core.inf.data.transfer.repository.IDataTransferTaskRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @Package: com.hex.ds.hdtp.core.inf.data.transfer.repository.impl
 * @ClassName DataTransferTaskRepository
 * @Description: 数据迁移任务-数据服务接口实现
 * @Author: wz.li
 * @Date 2023/8/17 17:23
 * @Version v2.0.2
 **/
@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class DataTransferTaskRepository implements IDataTransferTaskRepository {

    private final IDataTransferTaskMapper dataTransferTaskMapper;

    private final IPageAndMyBatisPlusPageConverter pageConverter;

    /*
     * @Method: queryListByPage <br>
     * @Param: [dataTransferTaskPo, toPage] <br>
     * @Return: com.hex.ds.hdtp.core.inf.common.page.Page<com.hex.ds.hdtp.core.inf.data.transfer.po.DataTransferTaskPo> <br>
     * @Description：分页查询<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/17 19:41 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public Page<DataTransferTaskPo> queryListByPage(DataTransferTaskPo dataTransferTaskPo, Page toPage) {
        final IPage tmpPageReslt = dataTransferTaskMapper.queryListByPage(
                pageConverter.toMyBatisPlusPage(toPage)
                , dataTransferTaskPo
        );
        final List list = tmpPageReslt.getRecords();
        final Page pageResult = pageConverter.toPage(tmpPageReslt);
        return pageResult.setData(list);
    }

    /*
     * @Method: modifySuccessNum <br>
     * @Param: [pkId] <br>
     * @Return: void <br>
     * @Description：更新数据同步任务成功数量<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/22 19:35 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public void modifySuccessNum(String pkId) {
        dataTransferTaskMapper.modifySuccessNum(pkId);
    }

    /*
     * @Method: modifyFailNum <br>
     * @Param: [pkId] <br>
     * @Return: void <br> 
     * @Description：更新数据同步任务失败数量<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/22 19:35 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public void modifyFailNum(String pkId) {
       dataTransferTaskMapper.modifyFailNum(pkId);
    }

    /*
     * @Method: modifyStatus <br>
     * @Param: [pkId] <br>
     * @Return: void <br>
     * @Description：更新数据同步任务状态<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/22 19:35 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public void modifyStatus(String endTime, String pkId) {
       dataTransferTaskMapper.modifyStatus(endTime, pkId);
    }

    @Override
    public List<String> queryTaskId(DataTransferTaskPo dataTransferTaskPo) {
        return dataTransferTaskMapper.queryByType(dataTransferTaskPo);
    }

    /*
     * @Method: queryById <br>
     * @Param: [pkId] <br>
     * @Return: com.hex.ds.hdtp.core.inf.data.transfer.po.DataTransferTaskPo <br>
     * @Description：根据主键查询<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/17 19:40 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public DataTransferTaskPo queryById(String pkId) {
        return dataTransferTaskMapper.selectById(pkId);
    }

    /*
     * @Method: add <br>
     * @Param: [dataTransferTaskPo] <br>
     * @Return: java.lang.Integer <br>
     * @Description：新增<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/17 19:40 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public Integer add(DataTransferTaskPo dataTransferTaskPo) {
        return dataTransferTaskMapper.insert(dataTransferTaskPo);
    }

    /*
     * @Method: modifyById <br>
     * @Param: [dataTransferTaskPo] <br>
     * @Return: java.lang.Integer <br>
     * @Description：根据主键更新<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/17 19:40 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public Integer modifyById(DataTransferTaskPo dataTransferTaskPo) {
        return dataTransferTaskMapper.updateById(dataTransferTaskPo);
    }

    /*
     * @Method: removeById <br>
     * @Param: [pkId] <br>
     * @Return: java.lang.Integer <br>
     * @Description：根据主键删除<br>
     * @Author： wz.li<br>
     * @Date： 2023/8/17 19:40 <br>
     * @Version： V2.0.2<br>
     */
    @Override
    public Integer removeById(String pkId) {
        return dataTransferTaskMapper.deleteById(pkId);
    }
}
